"""
局部变量:局部或者函数体内的变量,外部不能访问
全部变量:再函数之外或者全局范围内声明的变量,允许再函数体内和外部访问,但是不允许再函数体内修改
"""


def func():
    var = 40
    print('inside', var)


# func()
# var = 80
# func() # 函数内的var还是40
# print('outside',var) # 调用函数后 全部的var还是80


"""
global 用于再函数内部访问和修改全局变量
"""
x = 10


def modify_global_variable():
    global x
    x = 20


print(x)
modify_global_variable()
print(x)

# nonlocal 用于访问和修改嵌套函数中外部函数中的变量
def outer():

    x = 'local'
    def inner():
        nonlocal x
        x = 'nonlocal'
        print('inner ',x)
    inner()
    print('outer ',x)

x = 'global'
outer()
print('global ',x)